package com.wang.architecture.a_original.service.impl;

import com.wang.architecture.a_original.BeanFactory;
import com.wang.architecture.a_original.BeanFactory1;
import com.wang.architecture.a_original.dao.DemoDao;
import com.wang.architecture.a_original.service.DemoService;

import java.util.List;

/**
 * @author wangchao05
 */
public class DemoServiceImpl implements DemoService {

    /**
     * 这里就是我们之前写 servlet 的时候需要 new 一个对象，后来让spring 来帮我们new出来了
     */
//    private DemoDao demoDao = new DemoDaoImpl();

    /**
     * 这个就是模拟静态方法 获取 dao
      */
    private DemoDao demoDao1 = BeanFactory.getDemoDaoWithReflection();

    /**
     * 把所有的组件抽出来做成外部化
     */
    private DemoDao demoDao = (DemoDao) BeanFactory1.getBean("demoDao");


    public DemoServiceImpl() {
        for (int i = 0; i < 10; i++) {
//            System.out.println(BeanFactory1.getBean("demoDao"));

            // 这种将对象的生成方式交给了 BeanFactory1 而不是自己在 new DemoDaoImpl() 这种方式就是控制反转
            System.out.println(BeanFactory1.getBeanSingleton("demoDao"));
        }
    }


    @Override
    public List<String> findAll() {
        return demoDao.findAll();
    }
}
